import { useUserStore } from '@/stores'
import { createRouter, createWebHistory } from 'vue-router'

// 创建路由实例：history模式（无#），基于vite环境变量配置基础路径
const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [
    // 1. 登录页：懒加载 + 命名代码块（chunkName: "login"）
    {
      path: '/login',
      name: 'login', // 建议给路由命名，方便后续通过name跳转
      // 懒加载：访问/login时才加载LoginPage组件，打包后生成 login.[hash].js
      component: () => import(/* webpackChunkName: "login" */ '@/views/login/LoginPage.vue'),
    },
    // 2. 主布局（嵌套路由父组件）：懒加载 + 命名代码块（chunkName: "layout"）
    {
      path: '/',
      name: 'layout',
      // 懒加载：访问根路径下任意子路由时，才加载LayoutContainer组件
      component: () =>
        import(/* webpackChunkName: "layout" */ '@/views/layout/LayoutContainer.vue'),
      redirect: '/article/manage', // 默认重定向到文章管理页
      children: [
        // 2.1 文章管理：懒加载 + 命名代码块（chunkName: "article-manage"）
        {
          path: '/article/manage',
          name: 'articleManage',
          component: () =>
            import(/* webpackChunkName: "article-manage" */ '@/views/article/ArticleManage.vue'),
        },
        // 2.2 文章频道：懒加载 + 命名代码块（chunkName: "article-channel"）
        {
          path: '/article/channel',
          name: 'articleChannel',
          component: () =>
            import(/* webpackChunkName: "article-channel" */ '@/views/article/ArticleChannel.vue'),
        },
        // 2.3 头像修改：懒加载 + 命名代码块（chunkName: "user-avatar"）
        {
          path: '/user/avatar',
          name: 'userAvatar',
          component: () =>
            import(/* webpackChunkName: "user-avatar" */ '@/views/user/UserAvater.vue'),
        },
        // 2.4 密码修改：懒加载 + 命名代码块（chunkName: "user-password"）
        {
          path: '/user/password',
          name: 'userPassword',
          component: () =>
            import(/* webpackChunkName: "user-password" */ '@/views/user/UserPassword.vue'),
        },
        // 2.5 个人资料：懒加载 + 命名代码块（chunkName: "user-profile"）
        {
          path: '/user/profile',
          name: 'userProfile',
          component: () =>
            import(/* webpackChunkName: "user-profile" */ '@/views/user/UserProfile.vue'),
        },
      ],
    },
  ],
})

// 登录拦截：全局前置守卫
router.beforeEach((to) => {
  const userStore = useUserStore() // 获取Pinia用户仓库
  // 逻辑：无token且访问的不是登录页 → 拦截到登录页；其他情况放行
  if (!userStore.token && to.path !== '/login') {
    return '/login' // 拦截到登录页
  }
  // 隐含返回undefined → 放行
})

export default router
